<html>
<head><meta charset="utf-8"><title>Making new `_#` prefixes not a breaking change · t-lang · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/index.html">t-lang</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html">Making new `_#` prefixes not a breaking change</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="195892494"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195892494" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195892494">(Apr 30 2020 at 19:53)</a>:</h4>
<p>Making raw idents worked only with <code>r#</code> because it was already reserved.</p>
<p>We should, as part of the next edition, make _all_ <code>${ident}#${stuff}</code> be reserved, so that we have space here to do things.</p>
<p>Without saying what those things would be, it could be <code>s"Hello"</code> for <code>Strings</code>, <code>keyword#yeet</code>, etc.</p>



<a name="195893410"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195893410" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Sebastian Malton <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195893410">(Apr 30 2020 at 19:59)</a>:</h4>
<p>I think that this is a good idea</p>



<a name="195893579"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195893579" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195893579">(Apr 30 2020 at 20:00)</a>:</h4>
<p><span class="user-mention silent" data-user-id="125270">scottmcm</span> <a href="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195892494" title="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195892494">said</a>:</p>
<blockquote>
<p>[...] it could be <code>s"Hello"</code> for <code>Strings</code>, [...]</p>
</blockquote>
<p>this was supposed to be <code>s#"Hello"</code>, right?</p>



<a name="195893688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195893688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> kennytm <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195893688">(Apr 30 2020 at 20:01)</a>:</h4>
<p><code>"Hello"s</code> is already a single token.</p>



<a name="195893694"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195893694" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195893694">(Apr 30 2020 at 20:01)</a>:</h4>
<p>I think we would want to do two things:</p>
<ul>
<li>reserve lexical space</li>
<li>clarify the GOAL -- i.e., we're using this to stabilize primitives where we haven't figured out the best way to expose them</li>
</ul>
<p>and in particular, whenever we make use of this lexical space in a design, we are effectively encourage people to build and experiment.</p>



<a name="195893753"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195893753" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195893753">(Apr 30 2020 at 20:02)</a>:</h4>
<p>I would (personally) be fine with the "must be a proc-macro" version though</p>



<a name="195893797"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195893797" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195893797">(Apr 30 2020 at 20:02)</a>:</h4>
<p><span class="user-mention silent" data-user-id="125254">kennytm</span> <a href="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195893688" title="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195893688">said</a>:</p>
<blockquote>
<p><code>"Hello"s</code> is already a single token.</p>
</blockquote>
<p>(yes but I think the intent was to enable a kind of easy playground for new language features, in this case literals that take the structure of <code>String</code> rather than <code>&amp;'static str</code>)</p>



<a name="195893865"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195893865" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195893865">(Apr 30 2020 at 20:03)</a>:</h4>
<p>((at least that's my inference...))</p>



<a name="195893911"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195893911" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195893911">(Apr 30 2020 at 20:04)</a>:</h4>
<p>Here's what I just posted to <a href="https://github.com/rust-lang/rust/issues/20760" title="https://github.com/rust-lang/rust/issues/20760">#20760</a>:</p>



<a name="195893951"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195893951" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195893951">(Apr 30 2020 at 20:04)</a>:</h4>
<p>We'd also like to standardize a syntax for "non-breaking syntax/keywords", so that it'd be possible to introduce new keywords understood by the compiler in a namespace that nobody especially wants to type in their code regularly, but that people can experiment with surface syntax for in macros or proc macros. This syntax would be stabilized for a given feature, and continue working even after we introduce some new surface syntax (e.g. at an edition boundary). One such proposal would be <code>r#$token</code>, where <code>token</code> will always get interpreted as a keyword. Then, we could have e.g. <code>r#$raw_ref(...)</code> and <code>r#$raw_mut_ref(...)</code>, and decide what the surface syntax should look like later, deferring that either to an edition (with a new keyword) or a point where we find backward-compatible syntax.</p>



<a name="195894039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894039">(Apr 30 2020 at 20:05)</a>:</h4>
<p>Seems good. I'm definitely into the idea. But I agree that it's a good idea to have <a href="https://github.com/rust-lang/rust/issues/20760" title="https://github.com/rust-lang/rust/issues/20760">#20760</a> on our list of "edition things to think about"</p>



<a name="195894045"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894045" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894045">(Apr 30 2020 at 20:05)</a>:</h4>
<p><span class="user-mention" data-user-id="125270">@scottmcm</span> so if I follow correctly, we would essentially make <code>#$</code> not allowed within identifiers?</p>



<a name="195894211"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894211" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894211">(Apr 30 2020 at 20:06)</a>:</h4>
<p>BTW, just to spell out what I was saying about the "special span" idea --</p>
<ul>
<li>I think that you could say there is a way to programatically create these keywords (e.g., with a special span, or just a special API on token that is never used by the lexer or something).</li>
<li>We could then publish a rust-lang crate on <a href="http://crates.io" title="http://crates.io">crates.io</a> like <code>experiments</code> and, for each such keyword, we create a macro in there, so that one can do <code>experiments::raw_ref(x)</code> or whatever</li>
<li>We encourage playground to always include <code>experiments</code> in the list of crates</li>
</ul>



<a name="195894233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894233">(Apr 30 2020 at 20:06)</a>:</h4>
<p>This honestly seems much nicer to me than some random set of tokens</p>



<a name="195894275"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894275" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894275">(Apr 30 2020 at 20:07)</a>:</h4>
<p>I think the ideal is that we then tie these experiments into a running project group</p>



<a name="195894282"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894282" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894282">(Apr 30 2020 at 20:07)</a>:</h4>
<p>That is pursuing some design goals</p>



<a name="195894299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894299">(Apr 30 2020 at 20:07)</a>:</h4>
<p>an interesting detail there is (in theory at least) we could make such a crate have a "stability hole" in it or whatever</p>



<a name="195894313"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894313" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894313">(Apr 30 2020 at 20:07)</a>:</h4>
<p>So, this would be going the "you can only generate this via macro" route?</p>



<a name="195894337"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894337" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894337">(Apr 30 2020 at 20:07)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894299" title="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894299">said</a>:</p>
<blockquote>
<p>an interesting detail there is (in theory at least) we could make such a crate have a "stability hole" in it or whatever</p>
</blockquote>
<p>what do you mean by stability hole?</p>



<a name="195894349"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894349" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894349">(Apr 30 2020 at 20:07)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894313" title="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894313">said</a>:</p>
<blockquote>
<p>So, this would be going the "you can only generate this via macro" route?</p>
</blockquote>
<p>right</p>



<a name="195894399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894399">(Apr 30 2020 at 20:08)</a>:</h4>
<p>so basically the programmatic way to use the syntax isn't actually stable, but the crate can use it</p>



<a name="195894411"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894411" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894411">(Apr 30 2020 at 20:08)</a>:</h4>
<p>for writing compiler unit tests, I suspect I would prefer some token syntax nonetheless</p>



<a name="195894413"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894413" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894413">(Apr 30 2020 at 20:08)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> What would be the advantage of having these be macro-generated-only, rather than having special lexer syntax?</p>



<a name="195894415"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894415" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894415">(Apr 30 2020 at 20:08)</a>:</h4>
<p>(e.g. maybe we just put this crate in the sysroot)</p>



<a name="195894419"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894419" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894419">(Apr 30 2020 at 20:08)</a>:</h4>
<p>but that wouldn't have to be stable</p>



<a name="195894461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894461">(Apr 30 2020 at 20:08)</a>:</h4>
<p>(I just mention my own desires because I don't want to get into a "its good for me but not for thee" situation, as pcwalton used to say...)</p>



<a name="195894500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894500">(Apr 30 2020 at 20:09)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> <a href="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894411" title="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894411">said</a>:</p>
<blockquote>
<p>for writing compiler unit tests, I suspect I would prefer some token syntax nonetheless</p>
</blockquote>
<p>that's an interesting point, presumably those unit tests could use <code>experiments::x</code> from sysroot or whatever?</p>



<a name="195894510"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894510" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894510">(Apr 30 2020 at 20:09)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894415" title="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894415">said</a>:</p>
<blockquote>
<p>(e.g. maybe we just put this crate in the sysroot)</p>
</blockquote>
<p>If we're going to go the macro-only route, I would definitely want to see this crate in the sysroot. Perhaps in <code>meta</code>?</p>



<a name="195894576"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894576" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894576">(Apr 30 2020 at 20:09)</a>:</h4>
<p><span class="user-mention" data-user-id="239881">@Josh Triplett</span> there is no real advantage apart from not having to define something like <code>r#$</code></p>



<a name="195894578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894578">(Apr 30 2020 at 20:09)</a>:</h4>
<p>one disadvantage to the sysroot is we can't issue breaking changes</p>



<a name="195894619"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894619" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894619">(Apr 30 2020 at 20:09)</a>:</h4>
<p>what sort of breaking change would we issue?</p>



<a name="195894680"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894680" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894680">(Apr 30 2020 at 20:10)</a>:</h4>
<p>well, e.g., say we "finish" experimentation and want to remove support</p>



<a name="195894695"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894695" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894695">(Apr 30 2020 at 20:10)</a>:</h4>
<p>we never do that</p>



<a name="195894708"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894708" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894708">(Apr 30 2020 at 20:10)</a>:</h4>
<p>that's the whole point :)</p>



<a name="195894714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894714">(Apr 30 2020 at 20:10)</a>:</h4>
<p>the experiments are stable</p>



<a name="195894724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894724">(Apr 30 2020 at 20:10)</a>:</h4>
<p>they're just "deprecated"</p>



<a name="195894729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894729">(Apr 30 2020 at 20:10)</a>:</h4>
<p>Yeah, the proposal here was that this is stable, and you just stop using it because it looks awful.</p>



<a name="195894738"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894738" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894738">(Apr 30 2020 at 20:10)</a>:</h4>
<p>in favor of the new approach</p>



<a name="195894747"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894747" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894747">(Apr 30 2020 at 20:10)</a>:</h4>
<p>or maybe not, who cares</p>



<a name="195894770"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894770" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894770">(Apr 30 2020 at 20:10)</a>:</h4>
<p>well yes I meant that we experimented and found it wanting</p>



<a name="195894778"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894778" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894778">(Apr 30 2020 at 20:10)</a>:</h4>
<p>like, we want to remove it as a feature entirely</p>



<a name="195894791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894791">(Apr 30 2020 at 20:10)</a>:</h4>
<p>I don't think we get that option</p>



<a name="195894798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894798">(Apr 30 2020 at 20:10)</a>:</h4>
<p>if we take this approach</p>



<a name="195894806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894806">(Apr 30 2020 at 20:10)</a>:</h4>
<p>we might never make a nice syntax on top</p>



<a name="195894813"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894813" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894813">(Apr 30 2020 at 20:11)</a>:</h4>
<p>but we never get to remove the core primitive</p>



<a name="195894826"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894826" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894826">(Apr 30 2020 at 20:11)</a>:</h4>
<p>yeah, that makes sense</p>



<a name="195894841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894841">(Apr 30 2020 at 20:11)</a>:</h4>
<p>that said, we probably <em>do</em> want a way to have the core primitive on nightly only</p>



<a name="195894853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894853">(Apr 30 2020 at 20:11)</a>:</h4>
<p>i.e., so we can tinker a bit with how the <em>core primitive</em> should work before we stabilize it</p>



<a name="195894856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894856">(Apr 30 2020 at 20:11)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> There's a straightforward way to do that.</p>



<a name="195894889"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894889" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894889">(Apr 30 2020 at 20:11)</a>:</h4>
<p>which might also address your point, <span class="user-mention" data-user-id="116122">@simulacrum</span>, since maybe we uncover in that time that the primitive is broken</p>



<a name="195894896"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894896" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894896">(Apr 30 2020 at 20:11)</a>:</h4>
<p>We can decide when to stabilize the <code>r#$</code> version, and until it's stable it's like any nightly feature.</p>



<a name="195894897"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894897" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894897">(Apr 30 2020 at 20:11)</a>:</h4>
<p>I see more of what you mean by the macro only thing now. as long as the playground can use the experiments crate that'd work.</p>



<a name="195894907"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894907" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894907">(Apr 30 2020 at 20:12)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894896" title="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894896">said</a>:</p>
<blockquote>
<p>We can decide when to stabilize the <code>r#$</code> version, and until it's stable it's like any nightly feature.</p>
</blockquote>
<p>yes</p>



<a name="195894962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894962">(Apr 30 2020 at 20:12)</a>:</h4>
<p>The advantage of this would be that we can <em>independently</em> make and stabilize two decisions: "should we have this feature" and "what syntax should we use for this feature".</p>



<a name="195894975"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894975" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894975">(Apr 30 2020 at 20:12)</a>:</h4>
<p>Right now we have to tie the two together.</p>



<a name="195894989"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195894989" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195894989">(Apr 30 2020 at 20:12)</a>:</h4>
<p>anyway <span class="user-mention" data-user-id="116083">@pnkfelix</span> raised a good point about compiler unit tests, that's more convincing to me than playground</p>



<a name="195895016"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895016" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895016">(Apr 30 2020 at 20:12)</a>:</h4>
<p>I'd personally be on board with either a <code>meta</code> or <code>experiments</code> crate in sysroot or just tokens with <code>#$</code> in them (or whatever)</p>



<a name="195895047"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895047" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895047">(Apr 30 2020 at 20:12)</a>:</h4>
<p>yes I don't care very much</p>



<a name="195895072"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895072" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895072">(Apr 30 2020 at 20:13)</a>:</h4>
<p>we can also do something in between full on sysroot, e.g. you need to <code>rustup component add experiments</code> to get it</p>



<a name="195895096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895096">(Apr 30 2020 at 20:13)</a>:</h4>
<p>but I don't think there's much value in that</p>



<a name="195895097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895097">(Apr 30 2020 at 20:13)</a>:</h4>
<p>It may be a style issue or who you know or something, but almost all the experimental rust collaboration i see is via playground links</p>



<a name="195895119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895119">(Apr 30 2020 at 20:13)</a>:</h4>
<p>I think it depends on the scale</p>



<a name="195895126"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895126" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895126">(Apr 30 2020 at 20:13)</a>:</h4>
<p>for <code>raw_ref</code>... yeah</p>



<a name="195895151"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895151" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895151">(Apr 30 2020 at 20:13)</a>:</h4>
<p>I can only think of one advantage to making this macro-only rather than special "future keyword" syntax:</p>



<a name="195895154"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895154" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895154">(Apr 30 2020 at 20:13)</a>:</h4>
<p>but I could see us using this to e.g. experiment with generators or who knows at some point</p>



<a name="195895225"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895225" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895225">(Apr 30 2020 at 20:14)</a>:</h4>
<p>or e.g. stuff like fehler</p>



<a name="195895343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895343">(Apr 30 2020 at 20:15)</a>:</h4>
<p>If it's macro-only, we can give it a fully descriptive name, like <code>ReturnError</code>, because proc macros are already quite verbose. If it's syntax-like, like <code>r#$foo</code>, it kinda wants to be shorter.</p>



<a name="195895450"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895450" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895450">(Apr 30 2020 at 20:15)</a>:</h4>
<p>We <em>could</em> say <code>r#$return_error e;</code>, nothing stops us. Or we could say <code>r#$yeet e;</code>. :)</p>



<a name="195895533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895533">(Apr 30 2020 at 20:16)</a>:</h4>
<p>We could even say <code>r#$12345</code> where 12345 is the tracking issue. ;)</p>



<a name="195895534"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895534" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895534">(Apr 30 2020 at 20:16)</a>:</h4>
<p>So for clarification, would be <code>experiments</code> proc-macro crate be specially blessed, or would all proc macros have a way to emit these special keywords and the <code>experiments</code> crate is just the easy way for outside users to access each special keyword one at a time?</p>



<a name="195895567"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895567" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895567">(Apr 30 2020 at 20:16)</a>:</h4>
<p><span class="user-mention" data-user-id="224471">@Lokathor</span> The latter, if we go that route.</p>



<a name="195895645"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895645" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895645">(Apr 30 2020 at 20:17)</a>:</h4>
<p>the only reason to have the experiments crate would be for playground</p>



<a name="195895651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895651">(Apr 30 2020 at 20:17)</a>:</h4>
<p>and tests etc</p>



<a name="195895667"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895667" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895667">(Apr 30 2020 at 20:17)</a>:</h4>
<p>i.e., not special, just a convenience</p>



<a name="195895689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895689">(Apr 30 2020 at 20:17)</a>:</h4>
<p>if we have the special keywords at all (vs programmatic access) I don't know that we'd want a "special crate"</p>



<a name="195895742"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895742" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895742">(Apr 30 2020 at 20:18)</a>:</h4>
<p><code>r#$tracker_id</code> is a very good way to make it work and <em>strongly</em> encourage people to update their code as soon as the thing gets a real stable syntax, because it's even more ugly than the other proposals.</p>



<a name="195895785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895785">(Apr 30 2020 at 20:18)</a>:</h4>
<p>I do like the tracking issue number thing, though I'm sure it'll be the new thing on the "obfuscated rust" block :)</p>



<a name="195895817"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895817" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895817">(Apr 30 2020 at 20:18)</a>:</h4>
<p><span class="user-mention" data-user-id="224471">@Lokathor</span> True. I'm still somewhat leaning towards <code>r#$descriptive_verbose_name</code>, though, for the sake of not making people carry around an index. :)</p>



<a name="195895834"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895834" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895834">(Apr 30 2020 at 20:19)</a>:</h4>
<p>I'd rather people say "wow that's long" than "wow that's obscure".</p>



<a name="195895890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895890">(Apr 30 2020 at 20:19)</a>:</h4>
<p>That holds doubly true for things we stabilize, and thus things that will permanently work.</p>



<a name="195895989"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195895989" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195895989">(Apr 30 2020 at 20:20)</a>:</h4>
<p>that's the policy that the <code>tinyvec</code> crate has to avoid name clashes with actual vec method names,  such as <code>ArrayVec::grab_spare_slice</code></p>



<a name="195896008"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195896008" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195896008">(Apr 30 2020 at 20:20)</a>:</h4>
<p><span class="user-mention" data-user-id="224471">@Lokathor</span> Nice precedent.</p>



<a name="195896096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195896096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195896096">(Apr 30 2020 at 20:21)</a>:</h4>
<p>One advantage that maybe hasn't been said out loud yet: it will probably be extremely easy for rustfix to apply the "convert to stabilized syntax" changes</p>



<a name="195896119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195896119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195896119">(Apr 30 2020 at 20:21)</a>:</h4>
<p>Yeah. Even if the syntax isn't just a keyword.</p>



<a name="195896182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195896182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195896182">(Apr 30 2020 at 20:22)</a>:</h4>
<p>It's easy to convert <code>r#$raw_ref(foo)</code> to an arbitrary raw reference syntax.</p>



<a name="195896220"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195896220" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195896220">(Apr 30 2020 at 20:22)</a>:</h4>
<p>Likewise <code>r#$raw_mut_ref</code>, or <code>r#$asm()</code>.</p>



<a name="195896450"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195896450" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195896450">(Apr 30 2020 at 20:24)</a>:</h4>
<p>what I'm imagining is that most folks wouldn't use the syntax directly anyway but rather some macro that wraps it, so rustfmt rewriting might not be super useful, but that's ok.</p>



<a name="195896475"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195896475" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195896475">(Apr 30 2020 at 20:25)</a>:</h4>
<p>for e.g. packed struct fields I'm guessing using the syntax directly would be common</p>



<a name="195896492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195896492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195896492">(Apr 30 2020 at 20:25)</a>:</h4>
<p>seems hard to do better than the r#$raw_reference (especially without postfix macros)</p>



<a name="195897289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195897289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195897289">(Apr 30 2020 at 20:31)</a>:</h4>
<p>can a macro even return a place?</p>



<a name="195897734"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195897734" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> kennytm <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195897734">(Apr 30 2020 at 20:35)</a>:</h4>
<div class="codehilite"><pre><span></span><code><span class="n">macro_rules</span><span class="o">!</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="p">(</span><span class="cp">$x</span>:<span class="nc">ident</span><span class="p">)</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cp">$x</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="k">fn</span> <span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">x</span><span class="o">!</span><span class="p">(</span><span class="n">y</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">5</span><span class="p">;</span><span class="w"></span>
<span class="w">    </span><span class="n">println</span><span class="o">!</span><span class="p">(</span><span class="s">&quot;{}&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">);</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="195898061"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195898061" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195898061">(Apr 30 2020 at 20:38)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894045" title="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195894045">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="125270">scottmcm</span> so if I follow correctly, we would essentially make <code>#$</code> not allowed within identifiers?</p>
</blockquote>
<p>We couldn't do <code>raw#match</code> because that lexes as three things in macros today, and thus was a breaking change.  So what I meant is that we'd change that lexing rule to be one token (in an edition) and thus could define meaning for it later if we wanted.  And one could continue to call a macro that wanted it as three tokens by just adding spaces.</p>



<a name="195898377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195898377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195898377">(Apr 30 2020 at 20:41)</a>:</h4>
<p>ah, okay, sure</p>



<a name="195912936"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195912936" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195912936">(Apr 30 2020 at 23:01)</a>:</h4>
<p>So, if we want to move forward with <code>r#$descriptive_name</code> syntax, is anyone interested in writing that up and proposing it for review?</p>



<a name="195913094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195913094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195913094">(Apr 30 2020 at 23:03)</a>:</h4>
<p>Suppose I could do that, i already have the repo cloned</p>



<a name="195913110"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195913110" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195913110">(Apr 30 2020 at 23:03)</a>:</h4>
<p>Seems like a very simple proposal to write.</p>



<a name="195913250"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195913250" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195913250">(Apr 30 2020 at 23:04)</a>:</h4>
<p>Thank you. Please feel free to note that this was discussed in a lang team meeting and subsequent Zulip thread.</p>



<a name="195913280"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195913280" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195913280">(Apr 30 2020 at 23:05)</a>:</h4>
<p>The most important justification is that it lets us separately review and approve proposals for new functionality and proposals for syntax for that functionality.</p>



<a name="195913300"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195913300" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195913300">(Apr 30 2020 at 23:05)</a>:</h4>
<p>And let people experiment with the latter.</p>



<a name="195913514"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195913514" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195913514">(Apr 30 2020 at 23:08)</a>:</h4>
<p><span class="user-mention" data-user-id="239881">@Josh Triplett</span> do we want <code>r#$name</code> or <code>something#name</code>?  I guess it's the former if we need it _now_, but I would kinda rather the latter even though it'd only be usable in the next edition.</p>



<a name="195913559"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195913559" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195913559">(Apr 30 2020 at 23:08)</a>:</h4>
<p>I'd like something that's usable in any Rust edition, going all the way back to 2015.</p>



<a name="195913598"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195913598" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195913598">(Apr 30 2020 at 23:09)</a>:</h4>
<p>That doesn't prevent us from using <code>something#name</code> in new editions for <em>other</em> purposes, such as new kinds of literals.</p>



<a name="195913635"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195913635" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195913635">(Apr 30 2020 at 23:09)</a>:</h4>
<p>But if we're developing something that's intended as "raw syntaxless language constructs", tying it to an edition seems counterproductive.</p>



<a name="195913983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195913983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195913983">(Apr 30 2020 at 23:13)</a>:</h4>
<p>As an example, if we wanted some new syntax for literal <code>String</code> values or literal <code>Path</code> values, we could prototype it as <code>r#$string_literal("foo")</code> or <code>r#$path_literal("foo")</code> and later on introduce something like <code>s#"foo"#</code> or <code>s"foo"</code> or <code>p#"foo"#</code>.</p>



<a name="195919662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195919662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195919662">(May 01 2020 at 00:34)</a>:</h4>
<p><a href="https://github.com/rust-lang/rfcs/pull/2919" title="https://github.com/rust-lang/rfcs/pull/2919">https://github.com/rust-lang/rfcs/pull/2919</a></p>



<a name="195920477"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195920477" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195920477">(May 01 2020 at 00:46)</a>:</h4>
<p><span class="user-mention" data-user-id="224471">@Lokathor</span> Nice work!</p>



<a name="195920495"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195920495" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195920495">(May 01 2020 at 00:46)</a>:</h4>
<p>In the last section, you might mention that such a crate may be provided via the sysroot. (And also, s/whitelist/safelist/ please.)</p>



<a name="195920591"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195920591" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195920591">(May 01 2020 at 00:48)</a>:</h4>
<p>Another alternative:<br>
We could wait to implement and stabilize features until we've determined their final surface syntax. This would make it more difficult for people to experiment with surface syntax.</p>



<a name="195920799"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195920799" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195920799">(May 01 2020 at 00:52)</a>:</h4>
<p>You might also add that this will allow usage of new features on old editions. Using the new syntax for those features may require moving to a new edition, but using the raw keyword syntax doesn't.</p>



<a name="195922961"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195922961" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195922961">(May 01 2020 at 01:28)</a>:</h4>
<p>I'm not clear on what "available via the sysroot means". Does that mean it's like alloc and proc_macro where you never actually list it in your Cargo.toml file?</p>



<a name="195923890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/195923890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#195923890">(May 01 2020 at 01:46)</a>:</h4>
<p>Right.</p>



<a name="196011014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/213817-t-lang/topic/Making%20new%20%60_%23%60%20prefixes%20not%20a%20breaking%20change/near/196011014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change.html#196011014">(May 01 2020 at 21:15)</a>:</h4>
<p><span class="user-mention silent" data-user-id="224471">Lokathor</span> <a href="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195919662" title="#narrow/stream/213817-t-lang/topic/Making.20new.20.60_.23.60.20prefixes.20not.20a.20breaking.20change/near/195919662">said</a>:</p>
<blockquote>
<p><a href="https://github.com/rust-lang/rfcs/pull/2919" title="https://github.com/rust-lang/rfcs/pull/2919">https://github.com/rust-lang/rfcs/pull/2919</a></p>
</blockquote>
<p>woah, that was fast ... heh...</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>